package com.springmq.mq.juc;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;

/**
 * @ClassName : Demo5
 * @Author : lby
 * @Date: 2021/2/4 15:42
 * @Description :
 */
public class Demo5 {
    /**
     * 队列阻塞的四种解决方案
     * 设置超时解决方案
     * 超时等待
     */

    void test1() throws InterruptedException {
        // 创建一个最多允许5个元素的队列
        ArrayBlockingQueue blockingQueue = new ArrayBlockingQueue<>(3);
        /**
         * 队列中加入元素
         */
        blockingQueue.offer("5555",2, TimeUnit.SECONDS);
        blockingQueue.offer("5555",1, TimeUnit.SECONDS);
        blockingQueue.offer("5555",4, TimeUnit.SECONDS);
        // 向队列中加入元素，当加入失败时，设置超时等待
        blockingQueue.offer("5555",5, TimeUnit.SECONDS);
        /**
         * 从队列中获取角色
         * 获取不到是，超时退出
         */
        blockingQueue.poll(2,TimeUnit.SECONDS);
        blockingQueue.poll(2,TimeUnit.SECONDS);
        blockingQueue.poll(2,TimeUnit.SECONDS);
        blockingQueue.poll(2,TimeUnit.SECONDS);
        blockingQueue.poll(2,TimeUnit.SECONDS);

        /**
         * 从队列中删除角色
         */
        blockingQueue.remove();
    }
}
